package com.mockmock.htmlbuilder;
import com.mockmock.mail.MockMail;
import org.apache.commons.lang.StringEscapeUtils;
import org.springframework.stereotype.Service;
import javax.mail.internet.MimeMessage;
import java.util.ArrayList;
@Service
public class MailListHtmlBuilder implements HtmlBuilder
{
private ArrayList<MockMail> mailQueue;
public void setMailQueue(ArrayList<MockMail> mailQueue)
{
this.mailQueue = mailQueue;
}
public String build()
{
String output =
"<div class=\"container\">\n";
if(mailQueue == null || mailQueue.size() == 0)
{
output += " <h2>No emails in queue</h2>\n";
}
else
{
String mailText = mailQueue.size() == 1 ? "email" : "emails";
output += " <h1>You have " + mailQueue.size() + " " + mailText + "! <small class=\"deleteLink\"><a class=\"delete\" href=\"/mail/delete/all\">Delete all</a></small></h1>\n";
output += " <table class=\"table table-striped\">\n";
output += " <thead>\n";
output += " <th>From</th>\n";
output += " <th>To</th>\n";
output += " <th>Subject</th>\n";
output += " <th>Action</th>\n";
output += " </thead>\n";
output += " <tbody>\n";
for (MockMail mail : mailQueue)
{
output += buildMailRow(mail);
}
output += " </tbody>\n";
output += " </table>\n";
}
output += "</div>\n";
return output;
}
private String buildMailRow(MockMail mail)
{
StringFromHtmlBuilder fromBuilder = new StringFromHtmlBuilder();
fromBuilder.setMockMail(mail);
String fromOutput = fromBuilder.build();
StringRecipientHtmlBuilder recipientBuilder = new StringRecipientHtmlBuilder();
recipientBuilder.setMaxLength(27);
recipientBuilder.setMockMail(mail);
recipientBuilder.setRecipientType(MimeMessage.RecipientType.TO);
String toOutput = recipientBuilder.build();
String subjectOutput;
if(mail.getSubject() == null)
{
subjectOutput = "<em>No subject given</em>";
}
else
{
subjectOutput = StringEscapeUtils.escapeHtml(mail.getSubject());
}
return
"<tr>\n" +
" <td>" + fromOutput + "</td>\n" +
" <td>" + toOutput + "</td>\n" +
" <td><a title=\"" + StringEscapeUtils.escapeHtml(mail.getSubject()) + "\" href=\"/view/" + mail.getId() + "\">" + subjectOutput + "</a></td>\n" +
" <td><a title=\"Delete this mail\" href=\"/delete/" + mail.getId() + "\"><em>Delete</em></a></td>\n" +
"</tr>";
}
}